singleselection: Make constructor transfer full
authorMatthias Clasen <mclasen@redhat.com>
Sun, 26 Jul 2020 21:16:15 +0000 (17:16 -0400)
committerMatthias Clasen <mclasen@redhat.com>
Sun, 26 Jul 2020 22:04:40 +0000 (18:04 -0400)
This is for consistency with other wrapping list constructors.
We want them all to be transfer full, allow-none.

Update all callers.

demos/gtk-demo/listview_settings.c
gtk/gtkcustompaperunixdialog.c
gtk/gtkdropdown.c
gtk/gtklistbase.c
gtk/gtkprintunixdialog.c
gtk/gtksingleselection.c
gtk/inspector/object-tree.c
gtk/inspector/recorder.c
gtk/inspector/resource-list.c
testsuite/gtk/singleselection.c

index 0ddd61889b082f948f62891f6049b52c8f04c2b4..03ed9642e4eb4d18f4b20446c5064ce73daf06e8 100644 (file)
@@ -409,7 +409,6 @@ do_listview_settings (GtkWidget *do_widget)
                                    columnview, NULL);
       gtk_list_view_set_model (GTK_LIST_VIEW (listview), G_LIST_MODEL (selection));
       g_object_unref (selection);
-      g_object_unref (treemodel);
 
       name_column = GTK_COLUMN_VIEW_COLUMN (gtk_builder_get_object (builder, "name_column"));
       sorter = gtk_string_sorter_new (gtk_property_expression_new (SETTINGS_TYPE_KEY, NULL, "name"));
index d16ae2e5cac435bb5dd66501a54caf479cec291e..138f4e4ef1728a7b53690d41ad7c31d0d4918b15 100644 (file)
@@ -896,7 +896,7 @@ populate_dialog (GtkCustomPaperUnixDialog *dialog)
   listview = gtk_list_view_new ();
   gtk_widget_set_size_request (listview, 140, -1);
 
-  model = G_LIST_MODEL (gtk_single_selection_new (G_LIST_MODEL (dialog->custom_paper_list)));
+  model = G_LIST_MODEL (gtk_single_selection_new (g_object_ref (G_LIST_MODEL (dialog->custom_paper_list))));
   gtk_list_view_set_model (GTK_LIST_VIEW (listview), model);
   g_signal_connect (model, "notify::selected", G_CALLBACK (selected_custom_paper_changed), dialog);
   g_object_unref (model);
index e28369850eea0a444a7fed5af3f4689bdc354f1a..32daf0a7b2f44899b14976898a10ab073964213b 100644 (file)
@@ -668,7 +668,6 @@ gtk_drop_down_set_model (GtkDropDown *self,
 
       filter_model = G_LIST_MODEL (gtk_filter_list_model_new (g_object_ref (model), NULL));
       g_set_object (&self->filter_model, filter_model);
-      g_object_unref (filter_model);
 
       update_filter (self);
 
@@ -677,7 +676,7 @@ gtk_drop_down_set_model (GtkDropDown *self,
       gtk_list_view_set_model (GTK_LIST_VIEW (self->popup_list), selection);
       g_object_unref (selection);
 
-      selection = G_LIST_MODEL (gtk_single_selection_new (model));
+      selection = G_LIST_MODEL (gtk_single_selection_new (g_object_ref (model)));
       g_set_object (&self->selection, selection);
       g_object_unref (selection);
 
index 5a1a38e40a1d1e9a704c1eaba42e28d1acc500e2..d6e1a129d0a10d3efe690f41a1b20068a4dddb5c 100644 (file)
@@ -2130,7 +2130,7 @@ gtk_list_base_set_model (GtkListBase *self,
       if (GTK_IS_SELECTION_MODEL (model))
         selection_model = GTK_SELECTION_MODEL (g_object_ref (model));
       else
-        selection_model = GTK_SELECTION_MODEL (gtk_single_selection_new (model));
+        selection_model = GTK_SELECTION_MODEL (gtk_single_selection_new (g_object_ref (model)));
 
       gtk_list_item_manager_set_model (priv->item_manager, selection_model);
       gtk_list_base_set_anchor (self, 0, 0.0, GTK_PACK_START, 0.0, GTK_PACK_START);
index 2305d3d4ed3c9f1f3ad2268736a906cca7f42b0d..23e43d9877f8a66e94934cc161f7866015d0cc66 100644 (file)
@@ -837,7 +837,6 @@ gtk_print_unix_dialog_init (GtkPrintUnixDialog *dialog)
   g_signal_connect (selection, "items-changed", G_CALLBACK (printer_added_cb), dialog);
   g_signal_connect_swapped (selection, "notify::selected", G_CALLBACK (selected_printer_changed), dialog);
   g_object_unref (selection);
-  g_object_unref (filtered);
 
   gtk_print_load_custom_papers (dialog->custom_paper_list);
 
index 209f6524e810bf47dead01fd05c6b3bc6ed199a8..8c23d3c3032025bd1e3ad28391c5d228ec4feb6c 100644 (file)
@@ -453,7 +453,7 @@ gtk_single_selection_init (GtkSingleSelection *self)
 
 /**
  * gtk_single_selection_new:
- * @model: (transfer none): the #GListModel to manage
+ * @model: (allow-none) (transfer full): the #GListModel to manage, or %NULL
  *
  * Creates a new selection to handle @model.
  *
@@ -462,11 +462,18 @@ gtk_single_selection_init (GtkSingleSelection *self)
 GtkSingleSelection *
 gtk_single_selection_new (GListModel *model)
 {
+  GtkSingleSelection *self;
+
   g_return_val_if_fail (G_IS_LIST_MODEL (model), NULL);
 
-  return g_object_new (GTK_TYPE_SINGLE_SELECTION,
+  self = g_object_new (GTK_TYPE_SINGLE_SELECTION,
                        "model", model,
                        NULL);
+
+  /* consume the reference */
+  g_clear_object (&model);
+
+  return self;
 }
 
 /**
index 5b65f03b91580e61a63818f5d65a388000cf223a..32124431af53207da39a6dff3d0cd8b734d87992 100644 (file)
@@ -1304,7 +1304,7 @@ gtk_inspector_object_tree_set_display (GtkInspectorObjectTree *wt,
                                                   create_model_for_object,
                                                   NULL,
                                                   NULL);
-  wt->priv->selection = gtk_single_selection_new (G_LIST_MODEL (wt->priv->tree_model));
+  wt->priv->selection = gtk_single_selection_new (g_object_ref (G_LIST_MODEL (wt->priv->tree_model)));
   gtk_column_view_set_model (GTK_COLUMN_VIEW (wt->priv->list),
                              G_LIST_MODEL (wt->priv->selection));
 }
index c76fb2971c80e5e99c7582a5e58e615ece389ea2..0fefa1609d00a50815d604d27187f388485014b6 100644 (file)
@@ -1239,7 +1239,7 @@ gtk_inspector_recorder_init (GtkInspectorRecorder *recorder)
                                                      TRUE,
                                                      create_list_model_for_render_node_paintable,
                                                      NULL, NULL);
-  recorder->render_node_selection = gtk_single_selection_new (G_LIST_MODEL (recorder->render_node_model));
+  recorder->render_node_selection = gtk_single_selection_new (g_object_ref (G_LIST_MODEL (recorder->render_node_model)));
   g_signal_connect (recorder->render_node_selection, "notify::selected-item", G_CALLBACK (render_node_list_selection_changed), recorder);
 
   factory = gtk_signal_list_item_factory_new ();
index 2abce1df7f11f0ec2938ed4cb4eebf9be97886db..997e327742c76ef06fa7407ad54f1a6ee5b5d819 100644 (file)
@@ -712,7 +712,6 @@ constructed (GObject *object)
   sorter = gtk_tree_list_row_sorter_new (g_object_ref (column_sorter));
   sort_model = G_LIST_MODEL (gtk_sort_list_model_new (g_object_ref (G_LIST_MODEL (rl->tree_model)), sorter));
   rl->selection = gtk_single_selection_new (sort_model);
-  g_object_unref (sort_model);
 
   gtk_column_view_set_model (GTK_COLUMN_VIEW (rl->list), G_LIST_MODEL (rl->selection));
 
index 256506cb4e4f0af3901d01a645ee644a6b8e88b6..b94b38091fe220187cdbde4dfd863539784acf8f 100644 (file)
@@ -249,7 +249,7 @@ new_model (GListStore *store, gboolean autoselect, gboolean can_unselect)
   GtkSelectionModel *result;
   GString *changes;
 
-  result = GTK_SELECTION_MODEL (gtk_single_selection_new (G_LIST_MODEL (store)));
+  result = GTK_SELECTION_MODEL (gtk_single_selection_new (g_object_ref (G_LIST_MODEL (store))));
 
   /* We want to return an empty selection unless autoselect is true,
    * so undo the initial selection due to autoselect defaulting to TRUE.